home *** CD-ROM | disk | FTP | other *** search
-
- *PROCEDURE DEFINITION MACRO
- * GENERATES FORMAL ARGUMENT LOCATIONS, SAVES AR1&0, AND POPS
- * RETURN STACK
- *
- * PROC NAME,FORMAL-LIST
- * FORMAL-LIST:=NIL|FORMAL|FORMAL,FORMAL-LIST
- * FORMAL:=VAR|(VAR,SIZE)
- *
- * VAR IS VARIABLE NAME USED IN FUNCTION
- * SIZE IS THE NUMBER OF WORDS REQUIRED
- * NAME IF THE PROCEDURE NAME (<4 CHARS)
-
- COPY CHECK.SCR
- COPY CREF.SCR
- COPY PROC2.SCR
-
- PROC $MACRO A,B1,B2,B3,B4,B5,B6,B7,B8
- $CHECK :A:
- PSEG PROG SEG
- DEF :A: DEF ENTRY
- :A: EQU $ ENTRY
- POP POP RETURN
- SACL :A:$R,0 SAVE IN :A:$R
- SAR AR0,:A:$0 SAVE AR0
- SAR AR1,:A:$1 SAVE AR1
- DSEG DATA SEG
- :A:$R BSS 1 RETURN SAVE
- :A:$0 BSS 1 AR0 SAVE
- :A:$1 BSS 1 AR1 SAVE
- $VAR L
- $ASG '$$CNTR' TO L.S
- $ASG 0 TO L.SV INIT FORMAL COUNT
- $ASG :A: TO L.SS
- $IF B1.L#=0
- $PROC3 :B1:
- $ENDIF
- $IF B2.L#=0
- $PROC3 :B2:
- $ENDIF
- $IF B3.L#=0
- $PROC3 :B3:
- $ENDIF
- $IF B4.L#=0
- $PROC3 :B4:
- $ENDIF
- $IF B5.L#=0
- $PROC3 :B5:
- $ENDIF
- $IF B5.L#=0
- $PROC3 :B6:
- $ENDIF
- $IF B7.L#=0
- $PROC3 :B7:
- $ENDIF
- $IF B8.L#=0
- $PROC2 :B8:
- $ENDIF
- DEND END OF DATA
- $VAR P
- $ASG '$$PROC' TO P.S
- $ASG 1 TO P.SV FLAG PROC TYPE
- $ASG :A: TO P.SS
- $END